package edu.gtcfla.km.appmodules.service;

import java.util.List;
import java.util.Set;

import org.springframework.data.domain.Page;
import org.vsg.biz.BusinessOperationException;
import org.vsg.search.api.criterion.PaginationCriteria;

import edu.gtcfla.km.appmodules.vo.KnowledgeFormVO;
import edu.gtcfla.km.appmodules.vo.KnowledgeListViewVO;

public interface KnowledgeService {
	
	public Page<KnowledgeListViewVO> pageAvailableAllList(PaginationCriteria criteria) throws BusinessOperationException, org.vsg.search.api.page.PaginationException;
	
	/**
	 * get list available by category id 
	 * @param categoryId
	 * @return
	 * @throws BusinessOperationException
	 */
	public Set<KnowledgeListViewVO> listAvailableByCategoryId(String categoryId) throws BusinessOperationException;

	
	void addKnowledge(KnowledgeFormVO infoForm) throws BusinessOperationException;
	
	/**
	 * show list knowledge 
	 * @param docId
	 * @return
	 * @throws BusinessOperationException
	 */
	KnowledgeFormVO getSingleKnowledgeDetail(String docId) throws BusinessOperationException;
	
	
	
	void updateKnowledge(KnowledgeFormVO infoForm) throws BusinessOperationException;
	
	
	void  deleteAllKnowledge(String[] moreKnowledgeIds) throws BusinessOperationException;
	
	
	void bindAttachments(List<String> attIds , String docId) throws BusinessOperationException;
	
}
